package com.medisoft.dao;

import com.medisoft.model.Estado;
import com.medisoft.model.Producto;
import java.util.List;
import javax.ejb.Local;
import javax.ejb.Stateless;

/**
 *
 * @author mmedina
 */
@Stateless
@Local(ProductoDao.class)
public class ProductoDaoImplJavaLite implements ProductoDao {

    @Override
    public List<Producto> getAll() {
        return Producto.findAll();
    }

    @Override
    public List<Producto> getAutocompleteCodProd(String codProd) {
        List<Producto> productoList = Producto.where("codigo like ? ", codProd + "%");
        return productoList;
    }

    @Override
    public List<Producto> getBuscarProductos(String codProd) {
        List<Producto> productoList = Producto.where("codigo like ? ", "%" + codProd + "%");
        return productoList;
    }

    @Override
    public Producto obtenerProductoPorCodigo(int codUsu) {
        Producto producto = Producto.findFirst("id = ?", codUsu);
        return producto;
    }

    @Override
    public boolean darBajaProducto(Producto objProducto) {
        boolean rpta = false;

        try {
            Producto prod = Producto.findFirst("id = ?", objProducto.getId());
            prod.set("estado", Estado.INACTIVO).saveIt();
            rpta = true;

        } catch (Exception e) {
            e.printStackTrace();
        }
        return rpta;
    }

    @Override
    public boolean actualizarProducto(Producto objProducto) {
        boolean rpta = false;

        try {
            Producto prod = Producto.findFirst("id = ?", objProducto.getId());
            prod.set("codigo", objProducto.getCodigo())
                    .set("descripcion", objProducto.getDescripcion())
                    .set("tipo_id", objProducto.getTipoProducto().getId())
                    .set("umedida_id", objProducto.getUnidadMedida().getId())
                    .set("cantidad", objProducto.getCantidad())
                    .set("precio", objProducto.getPrecio())
                    .set("estado", objProducto.getEstado())
                    .saveIt();
            rpta = true;

        } catch (Exception e) {
            e.printStackTrace();
        }
        return rpta;
    }

}
